<?php
Class UtilisateurDAO
{
	public $connexion;

	public function __construct()
	{
		try {
			$this->connexion = new PDO("mysql:host=".SERVEUR_MYSQL.";dbname=".BASE.";charset=utf8", UTILISATEUR, M2P);
		}
		catch(PDOException $e)
		{
			echo "Erreur : ".$e->getMessage();
			die();
		}
	}


	public function rechercher_utilisateur_by_login_and_password($pseudo, $passe)
	{
		$query = "SELECT * "
		."FROM utilisateur "
		."WHERE login = :login AND pwd = :pwd";
		
		$requette_preparee = $this->connexion->prepare($query);
		$requette_preparee->bindValue(":login" , $pseudo, PDO::PARAM_STR);
		$requette_preparee->bindValue(":pwd" , $passe, PDO::PARAM_STR);
		$requette_preparee->execute();
		$utilisateur = $requette_preparee->fetchObject('Utilisateur');
		return  $utilisateur;

	} // rechercher_utilisateur_by_login_and_password

	public function rechercher_utilisateur_by_id($id)
	{
		$query = "SELECT * "
				."FROM utilisateur "
				."WHERE idutilisateur = :id";
	
		$requette_preparee = $this->connexion->prepare($query);
		$requette_preparee->bindValue(":id" , $id, PDO::PARAM_INT);
		$requette_preparee->execute();
		$utilisateur = $requette_preparee->fetchObject('Utilisateur');
		return  $utilisateur;
	
	} // rechercher_utilisateur_by_id
	
	public function ajouter_utilisateur($utilisateur)
	{	
		$message = null;
		$query = "INSERT INTO utilisateur ( nom, prenom, login, pwd, idcentre, prescripteur, titre, mail, adresse, admin, bduser ) values ";
		$query .= " ( :nom, :prenom, :login, :pwd, :idcentre, :prescripteur, :titre, :mail, :adresse, :admin, :bduser)";
		$requette_preparee = $this->connexion->prepare($query);
		if ($utilisateur->nom == null){
			$requette_preparee->bindValue(":nom" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":nom" , $utilisateur->nom, PDO::PARAM_STR);
		}
		if ($utilisateur->prenom == null){
			$requette_preparee->bindValue(":prenom" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":prenom" , $utilisateur->prenom, PDO::PARAM_STR);
		}
		if ($utilisateur->login == null){
			$requette_preparee->bindValue(":login" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":login" , $utilisateur->login, PDO::PARAM_STR);
		}
		if ($utilisateur->pwd == null){
			$requette_preparee->bindValue(":pwd" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":pwd" , $utilisateur->pwd, PDO::PARAM_STR);
		}
		if ($utilisateur->idcentre == null){
			$requette_preparee->bindValue(":idcentre" , 0, PDO::PARAM_INT);
		} else {
			$requette_preparee->bindValue(":idcentre" , $utilisateur->idcentre, PDO::PARAM_INT);
		};
		if ($utilisateur->prescripteur == null){
			$requette_preparee->bindValue(":prescripteur" , 0, PDO::PARAM_INT);
		} else {
			$requette_preparee->bindValue(":prescripteur" , $utilisateur->prescripteur, PDO::PARAM_INT);
		}
		if ($utilisateur->titre == null){
			$requette_preparee->bindValue(":titre" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":titre" , $utilisateur->titre, PDO::PARAM_STR);
		}
		if ($utilisateur->mail == null){
			$requette_preparee->bindValue(":mail" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":mail" , $utilisateur->mail, PDO::PARAM_STR);
		}
		if ($utilisateur->adresse == null){
			$requette_preparee->bindValue(":adresse" , NULL, PDO::PARAM_NULL);
		} else {
			$requette_preparee->bindValue(":adresse" , $utilisateur->adresse, PDO::PARAM_STR);
		}
		if ($utilisateur->admin == null){
			$requette_preparee->bindValue(":admin" , 0, PDO::PARAM_INT);
		} else {
			$requette_preparee->bindValue(":admin" , $utilisateur->admin, PDO::PARAM_INT);
		}
		if ($utilisateur->bduser == null){
			$requette_preparee->bindValue(":bduser" , 0, PDO::PARAM_INT);
		} else {
			$requette_preparee->bindValue(":bduser" , $utilisateur->bduser, PDO::PARAM_INT);
		}
		$t = $requette_preparee->execute();
	
		if(!$t)
		{
			$taberr = $requette_preparee->errorInfo();
			$message = "Erreur numéro :".$taberr[0]."(".$taberr[1]."):".$taberr[2];
	
		} else  {
			$message = $this->connexion->lastInsertId();
		}
		return $message;

	} // ajouter_utilisateur
	public function modifier_utilisateur($utilisateur)
	{
		$message = null;
		$query = "UPDATE utilisateur SET ";
		if ($utilisateur->nom != null){
			$query.= "nom = :nom , ";
		}
		if ($utilisateur->prenom != null){
			$query.= "prenom = :prenom , ";
		}
		if ($utilisateur->login != null){
			$query.= "login = :login , ";
		}
		if ($utilisateur->pwd != null){
			$query.= "pwd = :pwd , ";
		}
		if ($utilisateur->idcentre != null){
			$query.= "idcentre = :idcentre , ";
		}
		if ($utilisateur->prescripteur != null){
			$query.= "prescripteur = :prescripteur , ";
		}
		if ($utilisateur->titre != null){
			$query.= "titre = :titre , ";
		}
		if ($utilisateur->mail != null){
			$query.= "mail = :mail , ";
		}
		if ($utilisateur->adresse != null){
			$query.= "adresse = :adresse , ";
		}
		if ($utilisateur->admin != null){
			$query.= "admin = :admin , ";
		}
		if ($utilisateur->bduser != null){
			$query.= "bduser = :bduser , ";
		}
		
		$query = substr($query, 0,-2);
		$query = $query." WHERE idutilisateur= :idutilisateur";
		$requette_preparee = $this->connexion->prepare($query);
		if ($utilisateur->nom != null){
			$requette_preparee->bindValue(":nom" , $utilisateur->nom, PDO::PARAM_STR);
		}
		if ($utilisateur->prenom != null){
			$requette_preparee->bindValue(":prenom" , $utilisateur->prenom, PDO::PARAM_STR);
		}
		if ($utilisateur->login != null){
			$requette_preparee->bindValue(":login" , $utilisateur->login, PDO::PARAM_STR);
		}
		if ($utilisateur->pwd != null){
			$requette_preparee->bindValue(":pwd" , $utilisateur->pwd, PDO::PARAM_STR);
		}
		if ($utilisateur->idcentre != null){
			$requette_preparee->bindValue(":idcentre" , $utilisateur->idcentre, PDO::PARAM_INT);
		}
		if ($utilisateur->prescripteur != null){
			$requette_preparee->bindValue(":prescripteur" , $utilisateur->prescripteur, PDO::PARAM_INT);
		};
		if ($utilisateur->titre != null){
			$requette_preparee->bindValue(":titre" , $utilisateur->titre, PDO::PARAM_STR);
		};
		if ($utilisateur->mail != null){
			$requette_preparee->bindValue(":mail" , $utilisateur->mail, PDO::PARAM_STR);
		}
		if ($utilisateur->admin != null){
			$requette_preparee->bindValue(":admin" , $utilisateur->admin, PDO::PARAM_INT);
		}
		if ($utilisateur->bduser != null){
			$requette_preparee->bindValue(":bduser" , $utilisateur->bduser, PDO::PARAM_INT);
		}
		
		$requette_preparee->bindValue(":idutilisateur" , $utilisateur->idutilisateur, PDO::PARAM_INT);
		$t = $requette_preparee->execute();
		
		if(!$t)
		{
				
			$taberr = $requette_preparee->errorInfo();
			$message = "Erreur numéro :".$taberr[0]."(".$taberr[1]."):".$taberr[2];
		
		} else {
			$message = $utilisateur->idutilisateur;
		}
		return $message;
	
	} // modifier_utilisateur
	
	public function supprimer_utilisateur_byId($idutilisateur)
	{
		$message = null;
		$query = "DELETE utilisateur WHERE idutilisateur =  :idutilisateur";
		$requette_preparee = $this->connexion->prepare($query);
		$requette_preparee->bindValue(":idutilisateur" , $utilisateur->idutilisateur, PDO::PARAM_INT);
		$t = $requette_preparee->execute();
		return $t;
	} // supprimer_utilisateur
	
	
	public function rechercher_medecin($idCentre = NULL, $nom = null){
		$query = "SELECT * "
				."FROM utilisateur "
				."WHERE prescripteur = :prescripteur";	
		if ($idCentre != null){
			$query .= " AND idcentre = :idcentre ";
		}
		if ($nom != null){
			$query .= " AND UPPER(nom) like UPPER(:nom) ";
		}
		$requette_preparee = $this->connexion->prepare($query);
		$requette_preparee->bindValue(":prescripteur" , 1, PDO::PARAM_INT);
		if ($idCentre != null){
			$requette_preparee->bindValue(":idcentre" , $idCentre, PDO::PARAM_INT);
		}
		if ($nom != null){
			$requette_preparee->bindValue(":nom" , trim($nom), PDO::PARAM_STR);
		}
		$requette_preparee->execute();
		$utilisateurs = $requette_preparee->fetchAll(PDO::FETCH_CLASS,'Utilisateur');
		return  $utilisateurs;
	}

	public function rechercher_utlisateur_by_centre($idCentre = NULL){
		$query = "SELECT * "
				."FROM utilisateur "
				."WHERE 1 ";
		if ($idCentre != null){
			$query .= " AND idcentre = :idcentre ";
		}
		$requette_preparee = $this->connexion->prepare($query);
		if ($idCentre != null){
			$requette_preparee->bindValue(":idcentre" , $idCentre, PDO::PARAM_INT);
		}
		$requette_preparee->execute();
		$utilisateurs = $requette_preparee->fetchAll(PDO::FETCH_CLASS,'Utilisateur');
		return  $utilisateurs;
	}
	
} // UtilisateurDAO



	?>
